home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9506
/
DELPHI.CD
< prev
next >
Wrap
Text File
|
1996-03-08
|
21KB
|
332 lines
@VDelphi 1.0@N
@VJósda a Borlandtól@N
A Borland elég alapos profilszûkítésen ment át
mostanában -- leginkább a programfejlesztéshez kapcsolódó
termékvonalat igyekeztek megtartani. A Delphi ezek közül a
legfontosabb. A Borland nyíltan a Visual Basic és a hozzá
hasonló programok versenytársának szánja.
A termék két változatban kapható. A Delphi for Windows
az egyszerûbb: ez viszonylag olcsó, ára pár tízezer forint
körül van. A másik a Delphi Client/Server Edition, ez
körülbelül 2000 dollárba kerül. A két verzió között az a
legfontosabb különbség, hogy a Client/Server Editionnel
képesek vagyunk SQL-en keresztül komoly kliens-szerver
szervezésû adatbázisokhoz csatlakozni. Mindkét változatban
benne van sok programozási segédeszköz (Turbo Assembler,
Turbo Debugger, stb.) és a ReportSmith jelentésgeneráló
program 2.5-ös verziója.
Ami a legfontosabb: a Delphi kitûnô vizuális programozói
lehetôségeket nyújt. E lehetôségek persze kimerülnek a
kezelôfelület létrehozásánál. Az ezen túlmutató feladatokat
a Delphi alapnyelvében, az eredetihez képest néhány nagyon
fontos bôvítéssel kiegészített Object Pascalban kell
megoldani. E bôvítések között olyanok vannak, mint a
kivételkezelés, futásidejû típusmegállapítás és az összetett
típusú visszatérési értékek. A Delphi nem interpretált
p-kódra alapuló, futtató DLL-hez kötött kódot generál, hanem
Pascal forrást, majd abból az egyik leggyorsabb létezô
fordítóval valódi, önmagában végrehajtható EXE file-t. A
keletkezô program így akár tízszer -- vagy talán hússzor is
-- gyorsabb lehet a megfelelô Visual Basic programnál.
@VAz Object Pascal@N
A rendszer mûködésének megértéséhez szükség van az
Object Pascal nyelvnek és delphis bôvítéseinek alapszintû
ismeretére. Fontos tudni, hogy a Delphi teljes egészében
objektumorientált fejlesztôi környezetet az Object Pascal
nyelvvel nagyon szorosan integrálták, a nyelv különleges
bôvítései pedig sokszor kifejezetten szükségesek a Delphi
megfelelô mûködéséhez. A következô néhány bekezdés
összefoglalja a nyelv néhány fontosabb lehetôségét.
A Delphi szerint a kezelôfelületünk objektumokból
(komponensekbôl) áll, ezeknek vannak olyan tulajdonságai,
amelyeket az Object Inspectoron keresztül
megváltoztathatunk. Amikor elkezdünk létrehozni saját
komponenseket, láthatjuk, hogy -- a C++-hoz hasonlóan,
ugyanakkor a fejlesztôi környezet sajátos igényeihez
igazítva -- az objektummezôknek négy elérési osztálya van:
private, protected, public és published. Az elsô három
jelentése teljesen C++-szerû (private: csak az objektum
saját mezôin belül elérhetô; protected: leszármazott
osztályú objektumokon belülrôl is elérhetô; public:
akárhonnan elérhetô). A published direktíva teszi láthatóvá
az adott mezôt az Object Inspector számára, valamint
futásidejû típusellenôrzést kapcsol hozzá.
Az objektummodell a Turbo Pascal régebbi verzióihoz
képest sokat változott: mivel minden új típusú objektum a
heapen képzôdik, nincs szükség rájuk mutató pointer
deklarálására, így alapértelmezéssé vált a referencia
szemantika. Az új típusú osztályoknak mindig van egy
alapértelmezett ôse (TObject). ùjdonságnak számítanak még a
már említett protected és published elérési szintek, az
osztályhoz tartozó tagfüggvények (hasonlóak a C++ static
tagfüggvényeihez), virtuális konstruktorok(!) és a
tulajdonságok (properties).
A nyelv lehetôvé teszi a C++-hoz hasonló strukturált
kivételkezelést is. Ez azt jelenti, hogy egy kivételes
állapot bekövetkeztekor egy kivétel lép fel, a kivétel a
program struktúrájában blokkonként halad kifelé és megkeresi
a legbelsô olyan kivételkezelôt, amely képes ôt lekezelni.
Lassúsága miatt leginkább hibakezelésre használható ez a
mechanizmus, semmiképpen nem ajánlható mondjuk ciklusok
megszakítására. A kivételkezelés itt is try-blokkokból,
kivételkezelô listából és egy végsô megoldás esetleges
megadásából áll.
Kihasználhatjuk az Object Pascal futásidejû
típusmegállapítási lehetôségeit is. Ez két esetben is nagyon
hasznos lehet: perzisztens objektum mechanizmus
létrehozásakor és olyankor, amikor alkalmazkodni kell egy
nem túl jól megtervezett osztálystruktúrához.
Az Object Pascal ezenkívül rendelkezésünkre bocsát
referenciákat és nyitott tömböket, annak a lehetôségét, hogy
egy tömböt egyszerûen (C-szerûen) inicializálhassunk,
valamint a C++ tiszta virtuális függvényeihez hasonló
teljesen absztrakt tagfüggvényeket (olyan virtuális
tagfüggvények, melyeket az ôket definiáló osztályon belül
nem implementálunk). Ezeket használva eljutunk az absztrakt
osztályokig -- ezek olyan osztályok, amelyeknek nem léteznek
példányai. Persze a többszörös öröklôdés nélkül az absztrakt
osztályok jelentôsége nagymértékben lecsökken, hiszen ezek
pont egy absztrakt protokollrendszert vannak hivatva --
általában -- definiálni, protokollrendszereknek megfelelô
dolgok pedig nem léteznek Object Pascalban, csak némileg
pótolhatók futásidejû típusinformáció használatával.
Láthatjuk, hogy a Delphi által használt Object Pascal
sokban hasonlít a C++-ra, valószínûleg éppen azért, mert
szeretnék részben ezt a piacot is megcélozni vele. A
legfontosabb -- sokszor nagyon zavaró -- hiányosság a
többszörös öröklôdés (vagy protokollrendszerek) hiánya, amit
némileg ellensúlyozhat a futásidejû típusmegállapítás, de
nagyon sok elegáns megoldástól fosztja meg ez a komoly
hiányosság a programozót. Persze tekintetbe kell vennünk azt
is, hogy a program nem bonyolult objektumorientált
rendszerek létrehozására szolgál, hanem windowsos
alkalmazások gyors fejlesztésére, amihez a vizuális
programozási eszközök hatékony támogatást nyújtanak.
@VVizuális programozás@N
A Delphi vizuális programozási lehetôségei kitûnôek,
egyértelmûen meghaladják az összes ilyen jellegû termékét.
Ez persze nem jelenti azt, hogy nem fogják túlhaladni, de
jelenleg egymagában képviseli a vizuális eszközök egy új
generációját.
A program elsô elindítása után -- ha még nem alakítottuk
át teljesen szájízünk szerint -- négy ablak jelenik meg a
képernyôn. A képernyô tetején látható központi ablakon
keresztül érhetjük el a Delphi összes lehetôségét. A második
az úgynevezett Object Inspector (objektumvizsgáló). A
maradék kettô takarja egymást: az egyikben a kezelôfelületet
szerkeszthetjük, a másikban programunk egy egységének Object
Pascal forrása látható.
A kezelôfelület egységeit úgynevezett formokra tagoljuk.
Egy ilyen egységhez tartozik általában egy programfordítási
egység (Delphi unit -- nagyon hasonlít a Turbo Pascal
unitokhoz). A Delphi kétirányú eszközeinek (two-way tools)
segítségével a kód és az objektum általában szinkronban
marad, ezt egy nagyon gyors és nagymértékben hibatûrô,
háttérben futó fordítóprogrammal érték el. Jellemzô a
Delphire, hogy bármit, amit vizuális eszközökkel meg tudunk
csinálni, meg tudunk csinálni Pascal programmal is, szinte
ugyanolyan egyszerûen. Ezt az egyszerûséget az
objektumorientált struktúrának köszönhetjük. Jellemzô rá,
hogy egy MDI alkalmazás, amely Borland C++ 4.5 AppExperttel
generálva 40 Kbyte C++ forrás lesz (ezenkívül 110 Kbyte
""egyéb" dolog), Delphi alatt körülbelül 250 sor.
A Delphi központi ablakában egy menüsort, egy
vezérlôpanel-részt és az úgynevezett komponens palettát
láthatjuk. Az elsô kettônek teljesen szokásos a használata,
míg a komponens paletta a használható objektumokat jelképezô
ikonsorokból áll, errôl húzogathatjuk a formokra a használni
kívánt dolgokat. Minden objektumhoz tartozik néhány
tulajdonság (property), ezeket módosíthatjuk az Object
Inspectorral. A komponensek méretét, elhelyezkedését
egymáshoz és a form aktuális méretéhez viszonyítva, vagy
abszolút méretekkel is megadhatjuk -- e jellemzôket is a
tulajdonságokon keresztül határozzuk meg.
A komponensek közül nem mindegyik látható vagy jelenik
meg a form ablakában teljes méretében (nem látható komponens
például egy adatforrás, nem jelenik meg egy beállítóablak).
Ezeknek persze ugyanúgy vannak változtatható tulajdonságaik,
mint látható rokonaiknak.
Amikor végrehajtunk valamilyen mûveletet egy éppen
látható komponensen (megnyomjuk rajta az egér bal gombját
stb.) vagy valamilyen más esemény (idôzítôesemény stb.)
történik, egy úgynevezett eseménykezelô szubrutin hívódik
meg. A komponensekhez köthetô eseményeket illetve
eseménykezelôket szintén az Object Inspectorral
vizsgálhatjuk meg illetve hozhatjuk létre.
Jól érzékelhetô a háttérbeli fordítóprogram mûködése az
Object Inspector használatakor: egy új eseménykezelô a
deklarálása után rögtön megjelenik az Object Inspector
menüiben. Ez az egyik hely, ahol a Delphi egy kicsit
megkeverhetô: ha kitöröljük az alapbeállítás szerinti --
Delphi által generált -- eseménykezelô szubrutin
deklarációját illetve definícióját, az Object Inspector ezt
nem veszi észre. Persze ez az állapot csak a következô
fordításig tart, ekkor a Delphi megkérdi, törölje-e a rá
vonatkozó hivatkozásokat? Ha igennel válaszolunk, a program
lefordul, ha nemmel, akkor futásidejû(!) hibaüzenetet
kapunk: az eseménykezelô nem inicializálható.
Egy újabb érdekes jellemzôje a Delphinek a cut & paste
funkció megvalósítása. Próbáljuk ki a következôt: válasszunk
ki egy kezelôfelület-elemet (komponenst) egy form-on,
másoljuk be a vágólapra, majd onnan másoljuk ki egy
szövegszerkesztôbe. Megjelenik az objektum definíciója
szövegesen, valahogy így (vigyázzunk, sehol nincs
pontosvesszô!):
object Komponensnév: KomponensOsztály
Tulajdonság1 = Érték1
Tulajdonság2 = Érték2
...
end
Az érdekes az, hogy az ilyen szerkezetû szöveget
visszamásolhatjuk a form-ra, így megjelenik ott a kérdéses
objektum. (Például: elindítjuk a notepad-et, beírjuk, hogy
""object Button1: TButton end", kiválasztjuk ezt a szöveget,
bemásoljuk a vágólapra majd onnan egy form-ra -- íme,
megjelenik egy Button1 nevû gomb.)
A Delphinek persze rengeteg érdekes és hasznos
tulajdonsága van még, ezek legtöbbje a rendszer
alapkoncepciójából és az Object Pascalhoz való nagyon szoros
kötôdésébôl ered.
Sok más dolog is segíti a fejlesztést: az Object
Browserrel például grafikus formában tanulmányozhatjuk az
osztályhierarchiát. Megvizsgálhatjuk, milyen
tulajdonságokkal, private, protected, public illetve
published felülettel rendelkezik az osztály, melyik milyen
új tulajdonságokat hoz be az osztálystruktúrába. Nagyon
hasznos, ha például azt a közös ôst keressük, amelyik behoz
egy új tulajdonságot az öröklôdési hierarchiába.
Ehhez kapcsolódik, hogy problémákat okozott a Vizuális
Komponens Könyvtár (Visual Component Library) helyenként nem
túl következetes megtervezése: sokszor elôfordul, hogy
ugyanolyan nevû tulajdonságokat nem közös ôstôl örököl két
rokon osztály, hanem saját maguk vezetik be, megakadályozva
ezzel az objektumorientált tervezés teljes kihasználását
(ilyen például sokhelyütt a Font vagy a Color tulajdonság).
Ez legtöbbször a többszörös öröklôdés hiányára vezethetô
vissza, de az osztálykönyvtár átgondoltabb megtervezésével
(ami valószínûleg mélyebb öröklôdési struktúrát
eredményezett volna) is sokat el lehetett volna érni. Ez
persze még nem túl nagy probléma, de egy ilyen nagy, fontos
és valószínûleg nagyon aktívan bôvített osztálykönyvtár nem
írható át anélkül, hogy kisebb-nagyobb kompatibilitási
problémák ne jelentkeznének -- kis kompatibilitási probléma
pedig nem létezik egy széles körben használt dolognál.
A többszörös öröklôdés megvalósításának az elhalasztása
tehát azt a veszélyt hordozhatja magában, hogy a VCL egyre
bonyolultabbá és áttekinthetetlenebbé válik, késôbb pedig
azért nem írható át, mert már túl sokan használják. Ez a
probléma a forráskód elérhetôségével némileg lecsökken, de
még mindig érzékelhetô lehet.
A VCL ebben a formájában és ilyen mérettel-- , az
említett probléma ellenére is -- teljesen elfogadható
struktúrájú. Funkcionalitása iránt sem emelhetô sok kifogás
-- megtalálhatunk benne nagyon sok mindent: elôre
elkészített dialógusokat, hasznos és érdekes
kezelôfelület-objektumot. Nagyon egyszerûen és gyorsan
bôvíthetô, a Delphin belülrôl.
A komponenseken kívül szakértôk (experts) és minták
(templates) segítik a munkánkat. Ha megnézzük az Options
menü Gallery pontját, látjuk, hogy szakértôket, illetve
mintákat csinálhatunk formok és egész projektek
létrehozásának meggyorsítására. A Delphi tartalmazza egy
expert teljes forráskódját, ebbôl könnyen megtanulhatjuk,
hogyan kell ilyent készíteni. Tulajdonképpen képesek vagyunk
a rendszert az összes fontosabb pontján nagyon rugalmasan
bôvíteni. A nyelv nagyfokú általánossága miatt ez egy nagyon
gyors, hatékony, rugalmas és elegáns programozói eszköz.
@VA fejlesztôi környezet@N
A fejlesztôi környezetrôl a vizuális programozás kapcsán
-- a két egység igen szoros kapcsolata miatt -- már sokat
elmondtam. Ezeken kívül is akad azért még említésre méltó
dolog: szólni kell a súgórendszerrôl, a használhatóságról és
a programozást segítô, nem szigorúan vizuális eszközökrôl.
A súgórendszer a megszokott Borland színvonalú: nagyon
jó. Rajta keresztül a Delphi minden vonását megtanulhatjuk,
csakúgy, mint az Object Pascal használatát. Nagyon jó a
helyzetfigyelô súgó, szinte mindig arról kapok információt,
amirôl szeretnék. Néhány Interaktív Tanító (Interactive
Tutor) is segíti az ismerkedést a Delphivel.
Használhatóság: láthatóan nagyon sok energiát
fordítottak a vizuális eszközök használhatóságára. Például
az Object Inspector az eseménykezelôket kettôs kattintásra
létrehozza, vagy ugyancsak kettôs kattintásra kiválasztja a
következô lehetséges tulajdonság értéket. A nem vizuális
eszközök -- leginkább a szövegszerkesztô -- használatával
problémáim voltak: a rendszer többi részéhez képest igen
keveset tud, tulajdonképpen semmivel se többet, mint a
Borland Pascal szövegszerkesztôje.
Harmadszor, a programcsomag tartalmaz egy Pascal nyelvû
nyomkövetôt és egy assemblert. Hozzátartozik még persze az
elengedhetetlen WinSpector és WinSight, ezek a
kezelôfelület-objektumok fejlesztésénél használhatók
leginkább.
Összességében a fejlesztôi környezet jól illeszkedik a
Delphi koncepciójához, legtöbb részében jól ki van dolgozva
és általában nagyon jól használható.
@VKliens-szerver rendszerek@N
Mint már említettem, a rendszer két változatban kapható.
A Delphi Client/Server változata révén a megfelelô
kezelôfelület-objektumokon keresztül olyan adatbázis
szerverekhez kapcsolódhatunk, amelyeken például Oracle,
Sybase, Microsoft SQL Server, Informix vagy InterBase fut.
Ezenkívül van egy egyfelhasználós lokális InterBase
szervere, támogatja a fejlesztôi csoportokban végzett
munkát, és tartalmazza a Visual Query Buildert, valamint a
VCL forráskódját.
A Client/Server verzióban található ReportSmith
természetesen az SQL verziós. Ezzel a programmal hatékonyan
állíthatók össze jelentések. Ezek olyan adatbázisokra
alkalmazhatók, amelyeket a Delphivel együtt is
használhatunk.
A Client/Server változattal készített EXE file-ok minden
további, Borland iránti kötelezettség nélkül adhatók tovább.
@VÖsszkép@N
A Delphire jellemzô, hogy az embernek elsô látásra
tetszik, és ahogy egyre többet tudunk meg róla, egyre
szimpatikusabbá válik. Kitûnôen van megtervezve a rendszer,
nagyon rugalmas, hiszen mi is megírhatunk mindent --
szakértôket, mintákat, komponenseket és
tulajdonságszerkesztôket. Készíthetünk ezen kívül DLL-eket
és VBX-eket is, mindezeket a Delphin belülrôl. Képessé
tették arra is, hogy sima DOS-os alkalmazásokat csináljunk
vele (persze így csak egyszerû Object Pascal fordítóként
használhatjuk, vizuális lehetôségek nélkül -- bár
készíthetünk DOS-os komponenskönyvtárakat is...) A VCL
támogatja a Microsoft legújabb fejlesztéseit (OLE 2.0, DDE,
MAPI, ODBC), és több mint 70 alap komponenst nyújt
számunkra. Hardverigénye ennek ellenére sem túl magas:
mindössze egy olyan PC kell neki, melyen Windows 3.1 fut, és
van benne legalább 6 (a Client/Server Editionhöz 8) Mbyte
memória. A merevlemezen 30 illetve 50 Mbyte-ot foglal.
Összességében tehát megérdemli a róla sok helyen kialakult
jó véleményt.
@KÉder Géza@N
@<9506\DEBUG.GIF>■■@N A Delphi 3GL nyomon követesi módszerei
@<9506\GALLERY.GIF>■■@N Minták és szakertôk gazdag választéka
@<9506\INDUL.GIF>■■@N A Delphi indítas után
@<9506\OBJBR.GIF>■■@N Az Object Browser